# 作者: 陈其志 
# 2025年02月18日20时05分27秒 
# 2716847110@qq.com

# 有7个整数，其中有3个数出现了两次，1个数出现了一次， 找出出现了一次的那个数。
import random


def random_list():
    new_list = []
    for i in range(7):
        new_list.append(random.randint(1, 100))
    print(new_list)


def select_one(list_1):
    """
    有7个整数，其中有3个数出现了两次，1个数出现了一次， 找出出现了一次的那个数。
    :param list_1:
    :return:
    """
    # 异或是满足交换律
    result = 0
    for i in list_1:
        result = result ^ i  # 异或相同为0，不同为1
    print(result)


# 分而治之的思想
def find_single_numbers(nums):
    count_dict = {}
    for num in nums:
        if num in count_dict:
            count_dict[num] += 1  #
        else:
            count_dict[num] = 1
    single_numbers = [num for num, count in count_dict.items() if count == 1]

    return single_numbers


if __name__ == '__main__':
    # random_list()
    my_list = [1, 2, 3, 2, 1, 3, 7]
    select_one(my_list)
    list_2 = [1, 2, 3, 3, 2, 1, 4, 5]
    print(find_single_numbers(my_list))
    print(find_single_numbers(list_2))
